
#include <iostream>

using namespace std;

#define CALL(mdl) extern void do ## mdl(); cout << "do" << #mdl << " --->" << endl; do ## mdl();

int startApp(int argc, char* argv[])
{
    cout << "Everything goes well so far. ^_^ " << endl;

    CALL(SimpleFactory);
    CALL(FactoryMethod);
    CALL(Singleton);
    CALL(Strategy);
    CALL(Decorator);
    CALL(Proxy);
    CALL(TemplateMethod);
    CALL(Builder);
    CALL(Observer);
    CALL(AbstractFactory);
    CALL(State);
    CALL(Adapter);
    CALL(Memento);
    CALL(Composite);
    CALL(Iterator);
    CALL(Bridge);
    CALL(Command);
    CALL(ResponsibilityChain);
    CALL(Mediator);
    CALL(Flyweight);
    CALL(Interpreter);
    
    return 0;
}

